import axios from 'axios'

// 导出基础URL常量
export const BASE_URL = 'https://58.dt12.cfd'

// 创建axios实例
const request = axios.create({
  baseURL: BASE_URL,
  timeout: 10000,
  headers: {
    'Content-Type': 'application/json'
  }
})

// 请求拦截器
request.interceptors.request.use(
  config => {
    // 从本地存储获取token
    const token = localStorage.getItem('token')
    // 如果token存在，则添加到请求头中
    if (token) {
      config.headers['token'] = token
      // console.log('请求头携带token:', config.headers['token'])
    } else {
      // console.log('请求未携带token，可能需要登录')
    }
    return config
  },
  error => {
    console.error('请求拦截器错误:', error)
    return Promise.reject(error)
  }
)

// 响应拦截器
request.interceptors.response.use(
  response => {
    const res = response.data
    // 如果返回的状态码为401，说明token已过期或无效，需要重新登录
    if (res.code === 401) {
      // 清除本地存储的token
      localStorage.removeItem('token')

      // 使用console.error记录错误信息
      console.error('登录已过期，请重新登录')

      // 注意：这里不直接使用ElMessage和router，因为这会导致循环依赖
      // 而是在业务代码中根据返回的code进行处理
      // 返回401响应，让业务代码处理登录过期逻辑
    }
    // 直接返回完整的响应数据，让业务代码根据 code 进行处理
    return res
  },
  error => {
    // 处理网络错误
    if (error.message.includes('timeout')) {
      console.error('请求超时，请检查网络连接')
    } else if (error.message.includes('Network Error')) {
      console.error('网络错误，请检查网络连接')
    }
    return Promise.reject(error)
  }
)

// 出金提款相关接口
export const withdrawalApi = {
  // 提款验证
  verifyWithdrawal(data) {
    return request({
      url: '/api/withdrawal/verify',
      method: 'post',
      data
    })
  }
}
// 用户相关接口
export const userApi = {
  // 发送验证码
  sendCode(email) {
    return request({
      url: '/api/user/sendCode',
      method: 'post',
      data: { email }
    })
  },

  // 用户注册
  register(data) {
    return request({
      url: '/api/user/register',
      method: 'post',
      data
    })
  },

  // 用户登录
  login(username, password) {
    return request({
      url: '/api/user/login',
      method: 'post',
      data: { username, password }
    })
  },

  // 获取资金明细
  getMoneyDetails(params) {
    return request({
      url: '/api/user/moneyDetails',
      method: 'get',
      params
    })
  },

  // 获取账户信息
  getBankAccount() {
    return request({
      url: '/api/user/info',
      method: 'get'
    })
  },

  // 添加/更新银行账户
  updateBankAccount(data) {
    return request({
      url: '/api/user/savebanks',
      method: 'post',
      data
    })
  },

  // 更改登录密码
  changeLoginPassword(data) {
    return request({
      url: '/api/user/loginPassword',
      method: 'post',
      data
    })
  },

  // 更新用户头像
  updateAvatar(data) {
    return request({
      url: '/api/user/profile',
      method: 'post',
      data
    })
  },

  // 获取银行列表
  getBanksList() {
    return request({
      url: '/api/user/banks',
      method: 'get'
    })
  },
}

// 职位相关接口
export const jobsApi = {
  // 获取职位类型
  getJobsType() {
    return request({
      url: '/api/jobs/getJobsType',
      method: 'get'
    })
  },

  // 获取职位列表-个人中心
  getJobsList(params) {
    return request({
      url: '/api/user/jobsList',
      method: 'get',
      params
    })
  },
  // 获取职位列表-找工作
  getWorkList(params) {
    return request({
      url: '/api/jobs/getList',
      method: 'get',
      params
    })
  },
  // 保存/编辑职位
  saveJob(data) {
    return request({
      url: '/api/jobs/save',
      method: 'post',
      data
    })
  },

  createJob(data) {
    return request({
      url: '/api/jobs/create',
      method: 'post',
      data
    })
  },

  // 删除职位
  deleteJob(jobs_id) {
    return request({
      url: '/api/jobs/del',
      method: 'post',
      data: { jobs_id }
    })
  },
   // 职位详情
  JobDetails(params) {
    return request({
      url: '/api/jobs/info',
      method: 'get',
      params
    })
  },
  // 公司详情
  CompanyDetails(params) {
    return request({
      url: '/api/user/companyInfo',
      method: 'get',
      params
    })
  }
}

// 订单相关接口
export const orderApi = {
  // 创建订单
  createOrder(data) {
    return request({
      url: '/api/order/create',
      method: 'post',
      data
    })
  },

  // 签名确认
  signOrder(data) {
    return request({
      url: '/api/order/sign',
      method: 'post',
      data
    })
  },

  // 获取工单列表
  getOrderList(params) {
    return request({
      url: '/api/user/orderList',
      method: 'get',
      params
    })
  },

  // 获取工单详情
  getOrderInfo(order_id) {
    return request({
      url: '/api/user/orderInfo',
      method: 'get',
      params: { order_id }
    })
  },

  // 雇主签名审核
  jobsSign(data) {
    return request({
      url: '/api/order/jobssign',
      method: 'post',
      data
    })
  }
}

// 入金相关接口
export const depositApi = {
  // 入金验证
  verifyDeposit(data) {
    return request({
      url: '/api/recharge/verify',
      method: 'post',
      data
    })
  }
}

// 通用接口
export const commonApi = {
  // 上传文件
  upload(file) {
    // 创建FormData对象
    const formData = new FormData()
    formData.append('file', file)

    return request({
      url: '/api/common/upload',
      method: 'post',
      data: formData,
      headers: {
        'Content-Type': 'multipart/form-data'
      }
    })
  },
  
  // 获取文章
  getArticle(id) {
    return request({
      url: '/api/common/article',
      method: 'get',
      params: { id }
    })
  },
    // 获取应用配置
  getAppConfig() {
    return request({
      url: '/api/common/appconfig',
      method: 'get'
    })
  },
}


